// 延迟执行
// export function debounce(func, delay=500){
// 	// 防抖函数（减少函数的调用）防抖 非立即执行 不可以使用箭头函数
// 	let timer;
// 	console.log('防抖函数执行开始');
// 	return function(...args) {
// 		console.log(timer);
// 		if (timer) {
// 			console.log('多次执行清除');
// 			clearTimeout(timer);
// 		} 
// 		timer = setTimeout(() => {
// 			func.apply(this,args);
// 		}, delay);
// 	};
// }

/**  防抖 非立即执行 不可以使用箭头函数
 * @author DQD
 * @param {function} fn
 * @param {number} delay 防抖延时默认 500毫秒
 * @param {boolean} isImmediate
 *
 * @return 执行的需要发抖的函数
 */
export const Debounce = (fn, delay = 500, isImmediate = true) => {
  let timer;
  return function () {
    if (isImmediate) {
      if (timer) {
        clearTimeout(timer)
      } else {
        fn.apply(this, arguments);
      }
      timer = setTimeout(() => {
        timer = null;
      }, delay);
    } else {
      if (timer) clearTimeout(timer);
      timer = setTimeout(() => {
        timer = null;
        fn.apply(this, arguments);
      }, delay);
    }
  }
}
